#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

// 先打印到文件，再恢复到控制台
int main()
{
    // 先备份现场
    int outfd = dup(1);

    // 重定向
    int fd = open("world", O_WRONLY | O_CREAT, 0777);

    dup2(fd, 1);
    printf("Hello Kitty!\n");
    
    // 刷新缓冲区
    fflush(stdout);

    // 恢复到现场
    dup2(outfd, 1);
    printf("Hello Kitty!\n");
    
    close(fd);
    return 0;
}

